package com.hq.zb.service;

import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.hq.zb.dto.CodeRulesHeaderDto;
import com.hq.zb.model.Code;
import com.hq.zb.model.CodeRulesHeader;
import com.hq.zb.model.CodeRulesLine;
import com.hq.zb.vo.CodeRulesHeaderVo;

import java.util.List;

/**
 * <p>
 *  流水号服务类
 * </p>
 *
 * @author huanghanrui
 * @since 2022-03-08
 */
public interface ICodeRulesHeaderService extends IService<CodeRulesHeader> {
    /**
     * 保存流水号规则配置
     * @param codeRulesHeaderDto
     */
    void saveCodeRule(CodeRulesHeaderDto codeRulesHeaderDto);

    /**
     * 获取流水号
     * @param ruleCode
     */
    String getCode(String ruleCode);

    /**
     * 获取流水号（不存在的自动生成）
     * @param ruleCode
     * @return
     */
    String getCode(String ruleCode, String ruleName, String constant, Integer seqLength);

    /**
     * 分页查询
     * @param page
     * @param wrapper
     * @return
     */
    Page<CodeRulesHeaderVo> queryCodeRules(Page<CodeRulesHeaderVo> page, Wrapper<CodeRulesHeaderVo> wrapper);

    /**
     * 删除流水号规则
     * @param codes
     */
    void deleteCodeRulesHeader(List<CodeRulesHeader> codes);

    /**
     * 删除流水号规则行
     * @param codeRulesLines
     */
    void deletecodeRulesLine(List<CodeRulesLine> codeRulesLines);
}
